<?

/**
* An administrator form for
* edit ippbx database connection
*/
function ippbx_admin() {
  $form = array();
  
  $form['ippbx'] = array(
    '#type' => 'fieldset',
    '#title' => t('Настройка соединения с базой данных IP-PBX.'),
    '#collapsible' => TRUE,
  );
  
  $form['ippbx']['ippbx_dbhost'] = array(
    '#type' => 'textfield',
    '#title' => t('Адрес сервера'),
    '#default_value' => variable_get('ippbx_dbhost', 'localhost'),
    '#size' => 25,
    '#maxlength' => 25,
    '#description' => t("Адрес сервера, где располягается база данных IP-PBX."),
    '#required' => TRUE,
  );
  
  $form['ippbx']['ippbx_dbport'] = array(
    '#type' => 'textfield',
    '#title' => t('Порт'),
    '#default_value' => variable_get('ippbx_dbport', 3306),
    '#size' => 4,
    '#maxlength' => 4,
    '#description' => t("Номер порта, для подключения к базе данных."),
    '#required' => TRUE,
  ); 
  
  $form['ippbx']['ippbx_dbname'] = array(
    '#type' => 'textfield',
    '#title' => t('Имя базы данны'),
    '#default_value' => variable_get('ippbx_dbname', 'sipard'),
    '#size' => 25,
    '#maxlength' => 25,
    '#description' => t("Имя базы данных где располагаются таблицы Sipard."),
    '#required' => TRUE,
  );

  $form['ippbx']['ippbx_dbuser'] = array(
    '#type' => 'textfield',
    '#title' => t('Имя пользователя'),
    '#default_value' => variable_get('ippbx_dbuser', 'root'),
    '#size' => 25,
    '#maxlength' => 25,
    '#description' => t("Имя пользователя для подключения к базе данных."),
    '#required' => TRUE,
  ); 

  $form['ippbx']['ippbx_dbpass'] = array(
    '#type' => 'password',
    '#title' => t('Пароль'),
    '#default_value' => variable_get('ippbx_dbpass', ''),
    '#size' => 25,
    '#maxlength' => 25,
    '#description' => t("Пароль для подключения к базе данных."),
    '#required' => FALSE,
  );
  
  return system_settings_form($form);
}


function ippbx_numbers_pool($form) {
	$form = array();
	
	$form['pools'] = array(
		'#type' => 'fieldset',
		'#title' => t('Добавление пула номеров.'),
		'#collapsible' => TRUE,
	);
	
	$form['pools']['type'] = array(
		'#type' => 'select',
		'#title' => t('Тип номеров'),
		'#description' => t('Выберите тип номеров, которые хотите добавить.'),
		'#options' => array(
			'2' => t('Факс'),
			'3' => t('Голосова почта'),
			'0' => t('Внешние'),
			'1' => t('Внутренние'),
		),
	);
	
	$form['pools']['number'] = array(
		'#type' => 'textfield',
		'#title' => t('Номер'),
		'#description' => t('Ввведите, номер которых хотите добавить'),
		'#size' => 20,
		'#maxlength' => 30,
	);
	
	$form['pools']['count'] = array(
		'#type' => 'textfield',
		'#title' => t('Количество'),
		'#default_value' => 1,
		'#description' => t('Ввведите, какое количество номеров потобного типа хотите добавить.'),
		'#size' => 20,
		'#maxlength' => 30,
	);
	
	$form['submit'] = array(
		'#type' => 'submit', 
		'#value' => t('Добавить номера'),
	);
	
	return $form;
}

function ippbx_numbers_pool_validate($form, &$form_state) {
	if ($form_state['values']['number'] == NULL ||  !preg_match( "/[0-9]/i",$form_state['values']['number']) ) {
		form_set_error('number', t('Поле номер: некоректный ввод, или пустое поле.'));
	}
	
	if ($form_state['values']['count'] == NULL ||  !preg_match( "/[0-9]/i",$form_state['values']['count']) || $form_state['values']['count'] < 1) {
		form_set_error('count', t('Поле количество: некоректный ввод, или пустое поле.'));
	}
}

function ippbx_numbers_pool_submit($form, &$form_state) {
	ippbx_set_db();
	for ($i = 0; $i < $form_state['values']['count']; $i++) {
		db_query("INSERT INTO NumbersPull (Number, NumberType) VALUES('%d','%d')", $form_state['values']['number'] + $i, $form_state['values']['type']);
	}
	ippbx_unset_db();
	drupal_set_message( t('Пулл номеров добавлен.') );
}

function ippbx_numbers_pool_view() {
	
	$type = array(
		'2' => t('Факс'),
		'3' => t('Голосова почта'),
		'0' => t('Внешний'),
		'1' => t('Внутренний'),
	);
	
	function free( $ID_User) {
		if ($ID_User == NULL) {
			return t('Свободен');
		} else {
			$user = user_load( array( 'uid' => $ID_User ) );
			return l( $user->name , 'user/'.$user->uid);
		}
	}

	$header = array(
		'number' => array(
			'data' => t('Номер'),
			'field' => 'Number',
		),
		'type' => array(
			'data' => t('Тип'),
			'field' => 'NumberType',
			'sort' => 'asc',
		),
		'free' => array(
			'data' => t('Использование'),
			'field' => 'ID_User',
		),
	);
	
	
	ippbx_set_db();
	$result = pager_query('SELECT Number, NumberType, ID_User FROM NumbersPull '.tablesort_sql($header), 50, 0);
	ippbx_unset_db();
	
	$numbers = array();
	$i = 0;
	
	while ($row = db_fetch_array($result)) {
		$numbers[$i]['number'] = $row['Number'];
		$numbers[$i]['type'] = $type[$row['NumberType']];
		$numbers[$i]['ID_User'] = free($row['ID_User']);
		$i++;
	}
	
	$output = theme('table', $header, $numbers);
	$output .= theme('pager', NULL, 50, 0);
	
	return $output;
}
?>